package com.srcptit.java.training.kienbd.btvn1;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.math.BigInteger;
import java.util.Scanner;

public class Bai4SoNguyenLon {
    static void WorkBigInt(BigInteger A,BigInteger B) throws IOException{
            // Sử dụng Buffered ghi file.
            BufferedWriter bufw = new BufferedWriter(new FileWriter("result4.txt"));                         
            
            BigInteger Tong;
            // Tổng hai số nguyên lớn.
            Tong = A.add(B);
            bufw.write(A+" + "+B+" = "+Tong);
            bufw.newLine();
            
            BigInteger Hieu;
            // Hiệu hai số nguyên lớn.
            Hieu = A.subtract(B);
            bufw.write(A+" - "+B+" = "+Hieu);
            bufw.newLine();
            
            BigInteger Tich;
            // Tích hai số nguyên lớn.
            Tich = A.multiply(B);
            bufw.write(A+" * "+B+" = "+Tich);
            bufw.newLine();
            
            BigInteger Thuong;
            // Thương hai số nguyên lớn.
            Thuong = A.divide(B);
            bufw.write(A+" / "+B+" = "+Thuong);
            
            //Đóng phương thức ghi file.
            bufw.close();
    }
    public static void main(String[] args) throws IOException {
            // Sử dụng Buffered đọc file.
            BufferedReader bufr = new BufferedReader(new FileReader("data4.txt")); 
            
            // Kiểm tra ngoại lệ.  
            try {
                // Kiểm tra file trống.
                if( bufr.ready()==false )    throw new myEx1();// Bắt lỗi file trống 
                
                // Đọc dữ liệu từ file.
                String dataout1 = bufr.readLine();
                String dataout2 = bufr.readLine();
                
                // Khai báo số nguyên lớn thứ nhất.
                BigInteger A = new BigInteger(dataout1); 
                BigInteger B = new BigInteger(dataout2); 
                System.out.println("The frist BigInt : "+A);
                System.out.println("The second BigInt : "+B);               
                //if( A<0 || B<0 )  throw new myEx3();//Bắt lỗi điều kiện.
                WorkBigInt(A,B);
                
                // Kết thúc đọc file.
                bufr.close();  
            }catch(myEx1 e){
                System.out.println("Error! File is Empty.");
            }catch(NumberFormatException e){
                System.out.println("Error! Data styte is wrong.");
            }catch(Exception e) {
                System.out.println("Error! Input again, please.");
            }            
    }
}
